﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.LightSwitch;

namespace LightSwitchApplication
{
    // !! non modificare ordine 
    //public enum SezioneMateriale : byte
    //{
    //    Tondo,
    //    Tubo,
    //    Piatto,
    //    Quadro,
    //    Angolare,
    //    Esagono,
    //    BarraFilettata,
    //    TuboQuadro,
    //    TuboRettangolo,
    //    NotDefined,
    //}


    public static class Aux_Mat
    {
     
    }

    public partial class MaterialeGrezzo
    {
        public static string GetNomeSezione(short sezione)
        {
            switch (sezione)
            {
                case 0:
                    return "Tondo";

                case 1:
                    return "Tubo";

                case 2:
                    return "Piatto";

                case 3:
                    return "Quadro";

                case 4:
                    return "Angolare";

                case 5:
                    return "Esagono";

                case 6:
                    return "BarraFilettata";
                default:
                    return string.Empty;

            }
        }
        partial void Descrizione_Compute(ref string result)
        {
            try
            {
                var nomeMat = Materiale.Descrizione;
                var sezione =GetNomeSezione(Sezione);
                var stato = StatoMateriale.Descrizione;
                var misure = GetMisure(Sezione);


                result = string.Format("{0} {1} {3} {2}", nomeMat, sezione, misure, stato);
            }
            catch
            {
                result = string.Empty;
            }
        }
     
       
        private string GetMisure(short sezione)
        {
            switch (sezione)
            {
                case 0:
                    return "De " + DiametroEsterno;

                case 1:
                    return "De " + DiametroEsterno + " Di " + DiametroInterno;

                case 2:
                    return LatoMaggiore + " x " + LatoMinore;

                case 3:
                    return "Lato = " + LatoMaggiore;

                case 4:
                    return LatoMaggiore + " x " + LatoMinore + " Sp. " + ChiaveEsagono;

                case 5:
                    return "Chiave " + ChiaveEsagono;

                default:
                    return string.Empty;

            }
        }

        partial void PesoKgPerMm_Compute(ref decimal result)
        {
            var MathPiDec = (decimal)Math.PI;

            switch (Sezione)
            {
                case 0:
                    {
                        var radius = DiametroEsterno / 2;
                        result = ((radius * radius * MathPiDec * Materiale.PesoSpecifico) / 1000000);

                    } break;

                case 1:
                    {
                        var radiusMax = DiametroEsterno / 2;
                        var radiusMin = DiametroInterno / 2;

                        result = (((radiusMax * radiusMax * MathPiDec) - (radiusMin * radiusMin * MathPiDec)) * Materiale.PesoSpecifico) / 1000000;

                    } break;

                case 2:
                    {
                        result = ((LatoMaggiore * LatoMinore) * Materiale.PesoSpecifico) / 1000000;
                    } break;

                case 3:
                    {
                        result = ((LatoMaggiore * LatoMaggiore) * Materiale.PesoSpecifico) / 1000000;
                    } break;

                case 4:
                    {
                        var spessore = ChiaveEsagono;

                        result = ((((LatoMaggiore - ChiaveEsagono) + LatoMinore) * spessore) * Materiale.PesoSpecifico) / 1000000;

                    } break;

                case 5:
                    {
                        var apotema = ChiaveEsagono / 2;

                        var lato = apotema / 0.866m;

                        var area = (lato * 3) * apotema;

                        result = (area * Materiale.PesoSpecifico) / 1000000;

                    } break;

                default:
                    {
                        result = 0;
                    } break;
            }
        }
    }
}

